# -*- coding: utf-8 -*-
# 作   者 ：许亦安
# 邮   箱 ：xuyian_dev@foxmail.com
# 创建时间 ：2020/10/22  17:53
# 项目名称 ：HFYG
# 文件名称 ：GetBySelenium.py
# 开发工具 ：PyCharm

# 导入模块
import xlwt
from selenium import webdriver
import time
import xlrd
import os

from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.select import Select

# 身份证姓名
stu_xls_path = "./data/10.xls"
# 查询结果存放路径
result_path = "./data/准考证查询结果10.xls"
# 网址
url = 'http://zk.ahzsks.cn/'


# 取文件
def file_isexist(path):
    # 判断账密文件是否存在
    if os.path.exists(path):
        # 存在
        return True
    else:
        # 不存在
        return False


if __name__ == '__main__':
    start_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
    if not file_isexist(stu_xls_path):
        print("账密文件不存在，先把  \'考生账密.xlsx\'  放在data文件夹内。")
        exit(0)
    # 获取账密表
    sheet = xlrd.open_workbook(stu_xls_path).sheet_by_index(0)
    # 获取总行数
    total_row = sheet.nrows
    # 创建结果文件
    workbook = xlwt.Workbook(encoding='utf-8')
    zc_sheet = workbook.add_sheet('结果', cell_overwrite_ok=True)
    # 写正常表头
    zc_sheet.write(0, 0, "身份证号")
    zc_sheet.write(0, 1, "姓名")
    zc_sheet.write(0, 2, "准考证号")
    workbook.save(result_path)

    # 行号游标
    zc_cursor = 1

    # 创建浏览器对象
    driver = webdriver.Firefox()
    for i in range(1, total_row):
        # 身份证，姓名
        sfz = sheet.row_values(i)[0]
        name = sheet.row_values(i)[1]
        print("第" + str(i) + "次访问---起始时间：" + start_time
              + "---当前时间：" + time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
              + "---身份证号：" + sfz + "---姓名：" + name)
        # 打开登录页
        driver.get(url)
        # 等待加载，限时60秒
        driver.implicitly_wait(60)
        # 到查询页面
        driver.find_element_by_xpath('//*[@id="btnAdmissionTicket"]').click()
        # 身份证
        driver.find_element_by_xpath('//*[@id="txtIdentification"]').send_keys(sfz)
        # 姓名
        driver.find_element_by_xpath('//*[@id="txtName"]').send_keys(name)
        # 合肥
        opt = driver.find_element_by_xpath('//*[@id="lstCity"]')
        Select(opt).select_by_value('100')
        # 查询
        driver.find_element_by_xpath('//*[@id="Button2"]').click()
        # 等待加载，限时60秒
        driver.implicitly_wait(60)

        # 判断账号密码是否正确，不正确会弹出弹窗
        is_present_ = EC.alert_is_present()(driver)
        if is_present_:
            print(is_present_.text)
            zc_sheet.write(zc_cursor, 0, sfz)
            zc_sheet.write(zc_cursor, 1, name)
            zc_sheet.write(zc_cursor, 2, is_present_.text)
            zc_cursor += 1
            workbook.save(result_path)
            is_present_.accept()
            continue

        # 获取结果
        text = driver.find_element_by_xpath('//*[@id="lblAdmissionTicket"]').text
        print(text)
        zc_sheet.write(zc_cursor, 0, sfz)
        zc_sheet.write(zc_cursor, 1, name)
        zc_sheet.write(zc_cursor, 2, text)
        zc_cursor += 1
        workbook.save(result_path)
        # 退出
        driver.find_element_by_xpath('//*[@id="btnBack"]').click()
